package com.yonyou.brigade.order_center.service;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.service.IService;
import com.yonyou.brigade.order_center.model.BriFlightOrder;
import com.yonyou.brigade.order_center.model.BriFlightOrderDO;
import com.yonyou.brigade.order_center.model.CnvFlightOrderDO;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author jiangzhf@yonyou.com
 * @since 2018-06-14
 */
public interface IBriFlightOrderService extends IService<BriFlightOrder> {
    List<BriFlightOrder> getBriFlightOrder(Map params);

    List<BriFlightOrderDO> getBriFlightOrderDOs(Map params);

    List<CnvFlightOrderDO> getCnvFlightOrderDos(Map<String, String> params, Date beginDate, Date endDate);

    void updateIsNoteByOrderId(int orderId);

    public void updateIsBxStateByOrderIds(List<Integer> ids,int bxState);


    /*
        该接口只是为服务出现问题，修复时使用
     */
    List<CnvFlightOrderDO> getCnvFlightOrderDosWithIds(Map<String, String> params,String ids);

    public List<BriFlightOrder> getOrdersByRelateYBZId(List<String> ybzIds);

    void updateSQByRelateYbzId(JSONArray relateYBZIds, String tenantId);

    List<BriFlightOrder> getFlightOrdersByTimeRange(String tenantId, Date begin, Date end, String isDomc);

    JSONObject getFlightOrderJson(JSONObject params);

    /**
     * 获取机票订单详情
     * @param tenant
     * @param orderNo
     * @return
     */
    BriFlightOrder getFlightOrderJson(String tenant, String orderNo);

    /**
     * 根据订单号获取订单
     * @param orderNo
     * @return
     */
    CnvFlightOrderDO getBriFlightOrderByOrderNo(String orderNo);

    /**
     * 根据订单号获取订单
     * @param orderNo
     * @param fromType
     * @return
     */
    List<CnvFlightOrderDO> getBriFlightOrderLikeOrderNo(String orderNo, String fromType, String tenant);

    /**
     * 根据获取订单的原单和退改单
     * @param orderNo
     * @param parentOrderNo
     * @param fromType
     * @return
     */
    List<CnvFlightOrderDO> getRelationOrders(String orderNo, String parentOrderNo, String fromType, String tenant);

    /**
     * 根据获取订单的原单和退改单
     * @param orderNo
     * @param parentOrderNo
     * @param fromType
     * @return
     */
    List<BriFlightOrder> getRelationOrdersV2(String orderNo, String parentOrderNo, String fromType, String tenant);

    /**
     * 获取订单的完整信息（包含订单，订单详情等信息）
     * @param userId 用户ID
     * @param bxState   报销状态
     * @param beginDate 开始时间
     * @param endDate   结束时间
     * @return
     */
    JSONArray getFlightOrders(String userId, String bxState, String beginDate, String endDate, String tenantId, Map<String, List<Map<String, String>>> canBeSeen);

    /**
     * 获取订单的完整信息（包含订单，订单详情等信息）
     * @param tenant
     * @param orderNo
     * @return
     */
    JSONArray getFlightOrders(String tenant, String orderNo);

    List<BriFlightOrder> getFlightOrdersByBxState(String userId, String bxState, String beginDate, String endDate, String tenant, Map<String, List<Map<String, String>>> canBeSeen);

    BriFlightOrder getFlightOrderByOrderNo(String orderNo);

    List<BriFlightOrder> getBriFlightOrderByParentOrderNo(String orderNo);

    /**
     * 国贸私有化
     * 通过友报账向NCC发送请求
     *  add by yangxw1
     *  2021年6月29日
     * @param url NCC地址
     * @param paeamOBJ 请求参数
     * @return
     */
    String punctureNCC(String url,JSONObject paeamOBJ);
}
